// eslint.config.mjs
import Config from "@antfu/eslint-config";

export default Config({
    ignores: ["node_modules/**", "dist/**", "public/**", "src/**/*.d.ts"],
    react: true,
    formatters: {
        css: true,
        html: false
    },
    lessOpinionated: true, // 允许使用箭头函数，如果关闭或删除此项 eslint 在检查时会自动将箭头函数转换为普通函数
    stylistic: {
        indent: 2,
        semi: true,
        blockSpacing: true,
        quotes: "double",
        quoteProps: "consistent-as-needed",
        commaDangle: "never",
        arrowParens: "always"
    },
    overrides: {
        react: {
            "react-hooks/exhaustive-deps": "off" // 禁止 hooks 依赖项警告
        },
        // https://eslint.style/
        stylistic: {
            "style/comma-dangle": ["error", "never"], // 禁止对象末尾自动补充逗号
            "style/max-statements-per-line": "off", // 函数括号内最多允许多少行
            "style/brace-style": ["error", "1tbs"], // 禁止 if else 多分支时 else 自动换行
            "style/arrow-parens": ["error", "always"], // 函数只有一个参数时保留括号
            "style/quote-props": ["error", "consistent-as-needed"], // 对象属性根据上下文智能添加引号
            "curly": "off", // 允许使用 if() return; 简写分支模式，开启的话会要求使用 if() { return; }
            "ts/no-use-before-define": "off", // 允许在定义变量之前使用变量
            "no-console": "off", // 允许使用 console
            "prefer-promise-reject-errors": "off", // 允许使用 new Promise(reject)
            "style/jsx-one-expression-per-line": "off", // 允许JSX 变量和文字一行
            "unused-imports/no-unused-vars": "off" // 允许未使用的函数形参存在
        }
    }
});
